const config = require('../config/config');

/**
 * 统一API响应格式
 */
class ApiResponse {
  /**
   * 成功响应
   * @param {Object} res - Express响应对象
   * @param {String} message - 成功消息
   * @param {Object} data - 响应数据
   * @param {Number} statusCode - HTTP状态码
   */
  static success(res, message = '操作成功', data = null, statusCode = 200) {
    return res.status(statusCode).json({
      code: 200,
      message,
      data
    });
  }

  /**
   * 失败响应
   * @param {Object} res - Express响应对象
   * @param {String} message - 错误消息
   * @param {Number} code - 业务错误码
   * @param {Number} statusCode - HTTP状态码
   */
  static error(res, message = '操作失败', code = 400, statusCode = 400) {
    return res.status(statusCode).json({
      code,
      message,
      data: null
    });
  }

  /**
   * 服务器错误响应
   * @param {Object} res - Express响应对象
   * @param {String} message - 错误消息
   * @param {Error} error - 错误对象
   */
  static serverError(res, message = '服务器内部错误', error = null) {
    console.error('服务器错误:', error);
    return res.status(500).json({
      code: 500,
      message,
      data: null,
      error: config.server.env === 'development' && error ? error.message : undefined
    });
  }

  /**
   * 未授权响应
   * @param {Object} res - Express响应对象
   * @param {String} message - 错误消息
   */
  static unauthorized(res, message = '未授权，请登录') {
    return res.status(401).json({
      code: 401,
      message,
      data: null
    });
  }

  /**
   * 禁止访问响应
   * @param {Object} res - Express响应对象
   * @param {String} message - 错误消息
   */
  static forbidden(res, message = '权限不足，无法访问') {
    return res.status(403).json({
      code: 403,
      message,
      data: null
    });
  }

  /**
   * 资源不存在响应
   * @param {Object} res - Express响应对象
   * @param {String} message - 错误消息
   */
  static notFound(res, message = '请求的资源不存在') {
    return res.status(404).json({
      code: 404,
      message,
      data: null
    });
  }
}

module.exports = ApiResponse; 